//
//  RetweetView.swift
//  新浪微博项目
//
//  Created by 王炯 on 16/7/23.
//  Copyright © 2016年 王炯. All rights reserved.
//

import UIKit
import SnapKit
//第二部分:转发微博的视图
class RetweetView: UIView
{
    
    //从外界获取到的转发微博的数据
    //从外界获取CellViewModel数据来设置cell的上控件的一些属性
    //此时获取到的viewModel数据是通过CellViewModel类对获取的网络数据dataModel进行数据处理好的数据
    //注意传递过来的数据类型一定是CellViewModel类型的
    var viewModel:CellViewModel?{
        
        didSet
        {
            
            guard let modeldata = viewModel?.dataModel else
            {
                return
            }
            
            //给转发文本赋值
            guard let tweet = modeldata.retweeted_status else
            {
                return
            }
            
            //(1)转发的文本信息
            //self.contentText.text = tweet.text ?? ""
            //利用正则表达式的思想处理文本数据中的有关表情名的数据
            self.contentText.attributedText = viewModel?.retweetAttributedStr
            
            
            
            //(2)视图信息
            //(8)配图数据
            /*
             - 首先要卸载
             - 如果count > 0 代表有配图
             - 01 赋值
             - 02 更改约束
             - 03 显示配图（cell复用问题）
             - 反之 代表没有配图
             - 01 更改约束
             - 02 隐藏配图（cell复用问题）
             */
            //8.1 首先先卸载掉当前View的底部视图
            self.ViewBottomConstraint?.uninstall()
            
            
            //判断当前的微博有没有数据
            if tweet.pic_urls?.count == 0
            {
                //8.2更改整个view的约束
                self.snp_updateConstraints(closure: { (make) in
                    self.ViewBottomConstraint =
                        make.bottom.equalTo(contentText.snp_bottom).offset(10).constraint
                })
                
                //8.3显示配图view(为了复用)
                self.pictureCollectView.hidden = true
            }
            else
            {
                //8.2赋值给collectionView的pictureModel
                self.pictureCollectView.modelArray = tweet.pic_urls
                
                //8.3更改整个view的约束
                self.snp_updateConstraints(closure: { (make) in
                    self.ViewBottomConstraint =
                        make.bottom.equalTo(pictureCollectView.snp_bottom).offset(10).constraint                })
                
                //8.4显示配图view(为了复用)
                self.pictureCollectView.hidden = false
            }
        }
        
    }
    
    
    //懒加载一个Label展示转发微博
    //正文
    private lazy var contentText:UILabel = {
        
        let lab:UILabel = UILabel(textColor: UIColor.darkGrayColor(), textFont: 15)
        
        //设置label显示的最大宽度
        lab.preferredMaxLayoutWidth = SCREENW - 20
        
        //设置lab自动换行
        lab.numberOfLines = 0
        
        return lab
    }()

    //配图
    private lazy var pictureCollectView:PictureCollectionView = PictureCollectionView()
    
    
    //视图整体的底部约束根据数据有没有配图信息来重新规划！！！，提取出来当做一个属性来处理
    //记住一定要导入SnapKit框架!!!
    var ViewBottomConstraint:Constraint?
    
    
    
    
    
    override init(frame: CGRect)
    {
        super.init(frame: frame)
        
        //布局界面
        setUpUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    //布局界面
    func setUpUI()
    {
        //设置转发视图的颜色(灰色)
        self.backgroundColor = RGB(237, green: 237, blue: 237)
        
        //添加转发文本到界面上
        addSubview(contentText)
        //添加转发的视图到界面上
        addSubview(pictureCollectView)
        
        
        //设置转发文本的约束
        contentText.snp_makeConstraints { (make) in
            
            make.top.leading.equalTo(10)
        }
        
        //设置转发图片的约束
        pictureCollectView.snp_makeConstraints { (make) in
            make.top.equalTo(contentText.snp_bottom).offset(10)
            make.leading.equalTo((SCREENW - (homePicWandH*3 + homePicMargin*2))/2)
            
            //在collectionView的内部已经设置其最终的Size之后，此时在cell中设置的Size约束可以不需要了
            //make.size.equalTo(CGSize(width: 100, height: 100))
        }
        
        self.snp_makeConstraints { (make) in
            
            //顶部,左边，右边的约束不变
            make.top.leading.trailing.equalTo(self)
            
            //获取到当前View的底部约束引用，用来根据数据来重新设置约束
            self.ViewBottomConstraint =
            make.bottom.equalTo(pictureCollectView.snp_bottom).offset(10).constraint
            
        }
    }

}
